package cn.xudy.group.Singleton;

import org.springframework.stereotype.Component;

/**
 * Created by Ulegal on 2017/11/29.
 */
@Component
public class LazySingleton {

   private static  LazySingleton lazySingleton = null;

    public static LazySingleton getInstance(){
                if (lazySingleton == null){
                    synchronized (LazySingleton.class){ // 获得对象锁，然后锁住这一段代码
                        /**
                         *  在synchronized中的if判断是为了防止多个线程凑巧同时第一次调用getInstance，
                         *  它们都会去进入synchronized块中，因为new一个这玩意需要很多资源，所以让它们再排队后再判断一次。
                         */
                        if (lazySingleton == null){
                            lazySingleton = new LazySingleton();
                        }
                    }
                }
        return lazySingleton;
    }

   private LazySingleton(){
       System.out.println("================================ 懒汉单利模式");
   }

}
